package com.codewsq;

/*
 * java的数据传递类型是值传递
 * java中值传递机制：
 *  如果是传的参数是基本数据类型，那么传递的是数值本身，相当于拿了一个值拷贝过去了，传递过去的值发生改变，不会影响原有的数值
 *  如果是引用类型的数据传递，那传递的是对象内存地址，一个引用，传递过去的参数发生了改变，那么原有的数值也会发生改变
 * */
public class ValueTransTest {

    public static void main(String[] args) {
        int m = 1000;
        int n = 2000;

        System.out.println("m=" + m + "，n=" + n);
        // 数字交换
        /*int temp = m;
        m = n;
        n = temp;*/
        swap(m, n);
        System.out.println("m=" + m + "，n=" + n);


        System.out.println("--------------------------------------------");
        ValueTransTest test = new ValueTransTest();
        test.first();
    }

    /*
     * 数字交换方法
     * */
    public static void swap(int m, int n) {
        int temp = m;
        m = n;
        n = temp;
    }

    public void first() {
        int i = 5;
        Value v = new Value();
        v.i = 25;
        second(v, i);
        System.out.println(v.i);
    }

    public void second(Value v, int i) {
        i = 0;
        v.i = 20;
        Value val = new Value();
        v = val;
        System.out.println(v.i + " " + i);
    }


}

class Value {
    int i = 15;
}
